namespace Core.Contracts.Enums
{
    using System;

    
    public enum FeaturesEnum
    {
        NotDefined = 0,

        // Robots

        AccumulatorCapacity,
        AccumulatorRechargeTime,
        CpuPerformance,
        ReactorPerformance,
        ArmorAmount,
        ChemicalResistance,
        KineticResistance,
        SeismicResistance,
        ThermalResistance,
        DemobilizerResistance,
        InterferenceEmission,
        InterferenceMinimum,
        InterferencePeak,
        InterferenceRadius,
        LockingRange,
        LockingTime,
        MaximumTargets,
        MissileGuidanceFailure,
        SensorStrength,
        SignalDetection,
        SignalMasking,
        AmmunitionReloadTime,
        CargoCapacity,
        SlopeCapacity,
        SurfaceHitSize,
        TopSpeed,
        Volume,
        Falloff,

        CpuUsage,
        ReactorUsage,
        AccumulatorUsage,
        CycleTime,
        HitDispersion,
        OptimalRange,
        ElectronicWarfareStrength,
        LockResistance,

        ExplosionSize,
        CriticalHitChance,

        ElectrostaticDispersion,

        SmallMissileDamage,
        MediumMissileDamage,
        ReloadingTime,
        RobotMass,
        ModuleMass,
        MissileLauncherCycleTime,

        LazerCycleTime,
        LazerFalloff,
        LazerOptimalRange,



        // Armor modules
        ArmorRepairCycleTime,
        ArmorRepairAmount,
        ArmorRepairAccumulatorUsage,
        ArmorModuleCpuUsage,
        ArmorModuleReactorUsage,
        RemoteArmorRepairAmount,
        RemoteArmorRepairCycleTime,
        RemoteArmorRepairOptimal,
        RemoteArmorRepairAccumulatorUsage,

        // Shield
        ShieldCycleTime,
        ShieldAbsorption,
        ShieldAbsorptionRatio,
        ShieldRadius,
        ShieldReactorUsage,
        ShieldCpuUsage,
        ShieldHardenerCpuUsage,
        ShieldHardenerReactorUsage,
        ShieldHardenerAccumulatorUsage,


        // Ammo
        AmmoCapacity,
        AmmoType,
        AmmunitionScanAreaRadius,
        InjectedAccumulatorAmount,
        ThermalDamage,
        SeismicDamage,
        KineticDamage,
        ChemicalDamage,
        AmmunitionExplosionSize,
        SmallMissileExplosionSize,
        MediumMissileExplosionSize,
        MissileOptimal,

        // Weapons general
        WeaponCpuUsage,
        WeaponReactorUsage,
        WeaponAccumulatorUsage,

        // Weapons damage
        SmallMagneticWeaponDamage,
        MediumMagneticWeaponDamage,
        SmallFirearmDamage,
        MediumFirearmDamage,
        SmallLaserDamage,
        MediumLaserDamage,

        // Weapons Falloff
        SmallMagneticWeaponFalloff,
        MediumMagneticWeaponFalloff,
        SmallFirearmFalloff,
        MediumFirearmFalloff,
        SmallLaserFalloff,
        MediumLaserFalloff,

        // Weapons optimal range
        SmallMagneticWeaponOptimal,
        MediumMagneticWeaponOptimal,
        SmallFirearmOptimal,
        MediumFirearmOptimal,
        SmallLaserOptimal,
        MediumLaserOptimal,



        // Weapons cycle time
        SmallMagneticWeaponCycleTime,
        MediumMagneticWeaponCycleTime,
        SmallFirearmCycleTime,
        MediumFirearmCycleTime,
        SmallLaserCycleTime,
        MediumLaserCycleTime,
        SmallMissileLauncherCycleTime,
        MediumMissileLauncherCycleTime,

        // Weapons hit dispersion
        SmallMagneticWeaponHitDispersion,
        MediumMagneticWeaponHitDispersion,
        SmallFirearmHitDispersion,
        MediumFirearmHitDispersion,
        SmallLaserHitDispersion,
        MediumLaserHitDispersion,
        SmallMissileLauncherHitDispersion,
        MediumMissileLauncherHitDispersion,



        // Electronic
        SignalDetectorCycleTime,
        SignalMaskerCycleTime,
        EnergyTransfererCycleTime,
        EnergyTransfererOptimal,
        EnergyTransfererTransferedEnergy,
        SignalMarkerCycleTime,
        SignalMarkerOptimal,
        SignalMarkerSignalMasking,
        EnergyDrainerCycleTime,
        EnergyNeutralizerCycleTime,
        EnergyNeutralizerOptimal,
        EnergyNeutralizersElectroDispersion,
        EnergyNeutralizerRange,
        EnergyNeutralizerNeutralizedEnergy,
        EnergyDrainerOptimal,
        EnergyDrainerDrainedEnergy,
        EnergyDrainersElectroDispersion,
        DemobilizerTopSpeed,
        DemobilizerCycleTime,
        DemobilizerOptimal,
        DemobilizerAccumulatorUsage,
        EcmCycleTime,
        EcmStrength,
        EcmOptimal,
        EcmAccumulatorUsage,
        SensorSuppressorCycleTime,
        SensorSuppressorStrength,
        SensorSuppressorOptimal,
        SensorSuppressorLockingRange,
        SensorSuppressorLockingTime,
        SensorAmplifierCycleTime,
        SensorSuppressorAccumulatorUsage,
        RemoteSensorAmplifierCycleTime,
        RemoteSensorAmplifierLockingRangeBonus,
        RemoteSensorAmplifierLockingTimeBonus,
        RemoteSensorAmplifierOptimal,
        CargoScannerCycleTime,
        CargoScannerFalloff,
        CargoScannerOptimal,
        EccmCycleTime,
        ChassisScannerCycleTime,
        ChassisScannerFalloff,
        ChassisScannerOptimal,
        EnergyInjectorsCycleTime,


        // Industrial
        GeoscannerCycleTime,
        HarvesterOptimal,
        HarvesterCycleTime,
        MinerOptimal,
        MinerCycleTime,
        HarvestedAmount,
        MinedAmount,
        GeoscannerAccuracy,

        // SAP Module
        SapModuleCycleTime,
        SapModuleOptimal,

        // Interference module
        InterferenceModuleOptimal,
        InterferenceModuleAccumulatorUsage,
        InterferenceModuleCycleTime,

        // ERP
        ThermalDamageRecovery,
        SeismicDamageRecovery,
        KineticDamageRecovery,
        ChemicalDamageRecovery,
        EnergyDrainerElectrostaticDispersion,
        EnergyInjectorCycleTime,
        EnergyNeutralizerElectrostaticDispersion,
        InterferenceEmitterCycleTime,
        InterferenceEmitterOptimal,
        InterferenceEmitterRadiusModification,
        InterferenceEmitterStrengthModification,
        TargetMarkerCycleTime,
        TargetMarkerOptimal,
        TargetMarkerSignalMasking,

        // Nexus
        NexusCycleTime,
        NexusAccumulatorUsage,
        NexusBonus,
        NexusModuleCycleTime,
        NexusModuleEffectRadius,
        NexusModuleAccumulatorRechargeTimeModification,
        NexusModuleArmorModification,
        NexusModuleArmorRepairAmountModification,
        NexusModuleCriticalHitChanceModification,
        NexusModuleEffectRangeModification,
        NexusModuleEwModuleOptimalRange,
        NexusModuleIndustrialModuleAccumulatorUsage,
        NexusModuleIndustrialModuleCycleTime,
        NexusModuleLockingRangeModification,
        NexusModuleLockingTimeModification,
        NexusModuleShieldAbsorptionModification,
        NexusModuleSurfaceHitSizeModification,
        NexusModuleTopSpeedModification,
        NexusModuleWeaponCycleTime,
       
        ScanAreaRadius,
        OperationalTime,

        MissileLauncherOptimal,
        MissileLauncherDamage,
    }
}